Kyle Simpson 原本也是開發者,他做過「各種工作」。
我的意思是各種各樣的公司,從大公司到小型創業公司,各種不同的 technology stack(PHP, .NET or Python)。
甚至是不同類型的公司,例如顧問公司和產品公司,或是介於兩者之間的所有公司。
但是他自己承認他是一個爛員工。
畢竟,有那麼多工作經驗是因為,每一個都待不久(6-8個月)。
不知道大家有沒有這種經驗,
一遇到問題解決不掉,卡著很久,然後感到沮喪,
因為你認爲問題的產生是因為用某個技術,
你不想碰那個技術,或是碰很久還是不了解,
最後就認為「這間公司技術債太多,爛公司!」,就換一間公司,完全不同技術的公司,
這樣你就不會遇到那個問題了。
Kyle Simpson 一開始就類似這樣,然後一直換到最後,他發現無論換到什麼技術棧(technology stack)、什麼程式語言,有些問題某種程度上都是一樣的。
舉例來說
有時候遇到上面問題,有時候意外可以動,然後你就趕快註解
/**
* @description 不要修改,不然後果自負
* */
Kyle Simpson 小劇場
Woow, 你寫 code 寫得像是專業的猜測員,你知道嗎,少數可以靠猜測當專業的大概只有天氣預報了!
你寫 code 比我好? 哦,不! 是你猜測準確機率比我高!所以你是 senior !(你不知道為什麼可以動,用猜的)
Kyle Simpson 小劇場 (二)
「bug 怎麼還沒修好!!」,可能是 PM 或是老闆問的。
『如果要趕時間的話,我重寫比較快,可以讓我重寫嗎?』 因為這樣你就不用去管為什麼有 bug 或是花時間去釐清邏輯,而且你剛寫好一定可以動。順帶一提,這個 bug 可能是別人的,但是更有可能是三週前的你自己。
如果你有重寫過任何 code,你有算過幾次嗎?如果用系統來算,重寫十次?百次?還是有問題有 bug 就重寫?
或是「誒!大夥我們來用新框架改寫,這樣就可以減少 bug 了!」 ⋯⋯ 你還是在不斷重寫。
沒有 else
的 if statement
?if(isLoggedIn()){
session = pullFromCache();
}
// what, no else here!?
為什麼沒有 else ? 因為 linter 會報錯? 還是你寫的當下不用寫 else 也不會有問題?
如果你的回答是「我思考過所有狀況,只需要 if,不用寫 else 條件」,
woooow,你是專家,那我問你,你要怎麼用 code 交流,或是說⋯⋯「我」怎麼知道?
先不要急著解釋,這個問題很有可能是三週後的你問的。
蛤?你還是知道?那⋯⋯三年後的你自己呢?
三年後有個 bug,大家都找不到,有人就懷疑你,「為什麼沒有 else ?」
你可能花 2 小時,回來看這段三年前的 code ,然後告訴對方為什麼沒有 else。
也有可能你忘了,這個 bug 最後鍋算你的,儘管可能和「為什麼沒有 else ?」無關。
註:
我沒有一開始就講 JS,因為先認識講者 Kyle Simpson 才能對理解後面的內容,
很多東西都圍繞 Kyle Simpson 思考的方法,可以先當作初步調整自己的 mindset。
Reference: Kyle Simpson Presents: Code is for Humans